package com.hui.dao;

import com.hui.domain.Mid;
import com.hui.domain.Song;
import com.hui.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @author Ayingzz
 * @create 2021/12/25 16:45
 */
@Mapper
public interface MusicWebMapper {

    /**
     * 查询所有歌曲
     * @return
     */
    List<Song> queryAllSongs();

    /**
     * 根据类型查询歌曲
     * @param type
     * @return
     */
    List<Song> querySongByType(String type);

    /**
     * 根据用户名查询歌曲（我的喜欢）
     * @param uname
     * @return
     */
    String querySongByUname(String uname);

    /**
     * 根据歌曲id组查询歌曲
     * @param midList
     * @return
     */
    List<Song> querySongByMidGroup(List<Mid> midList);

    /**
     * 根据关键字查询歌曲
     * @param keyword
     * @return
     */
    List<Song> querySongByKeyword(String keyword);

    /**
     * 更新我的喜欢
     * @param uname
     * @param favouriteStr
     * @return
     */
    int updateFavouriteByUname(@Param("uname") String uname, @Param("favouriteStr") String favouriteStr);

    /**
     * 根据歌曲id增加播放次数
     * @param mid
     * @return
     */
    void addPlayTimesByMid(String mid);

    /**
     * 查询所有歌曲类型
     * @return
     */
    Set<String> queryAllTypes();

    /**
     * 添加歌曲
     * @param song
     * @return
     */
    int insertSong(Song song);

    /**
     * 根据歌曲id查询歌曲
     * @param mid
     * @return
     */
    Song querySongByMid(String mid);

    /**
     * 根据歌曲id编辑歌曲
     * @param song
     * @return
     */
    int updateSongByMid(Song song);

    /**
     * 根据id删除歌曲
     * @param mid
     * @return
     */
    int deleteSongByMid(String mid);

    /**
     * 添加一个用户
     * @param user
     * @return
     */
    int insertUser(User user);

    /**
     * 匹配用户（登录）
     * @param uname
     * @param upass
     * @return
     */
    String checkUserByUname(@Param("uname") String uname, @Param("upass") String upass);
}
